home *** CD-ROM | disk | FTP | other *** search
- package com.sun.java.swing.plaf.basic;
-
- import com.sun.java.swing.AbstractListModel;
- import com.sun.java.swing.event.ListDataEvent;
- import com.sun.java.swing.preview.JFileChooser;
- import java.beans.PropertyChangeEvent;
- import java.beans.PropertyChangeListener;
- import java.io.File;
- import java.util.Vector;
-
- class BasicDirectoryModel extends AbstractListModel implements PropertyChangeListener {
- private JFileChooser filechooser = null;
- private Vector fileCache = null;
- private LoadFilesThread loadThread = null;
- private Vector files = null;
- private Vector directories = null;
-
- BasicDirectoryModel(JFileChooser filechooser) {
- this.filechooser = filechooser;
- this.validateFileCache();
- }
-
- public boolean contains(Object o) {
- return this.fileCache != null ? this.fileCache.contains(o) : false;
- }
-
- public void fireContentsChanged() {
- this.files = null;
- this.directories = null;
- ((AbstractListModel)this).fireContentsChanged(this, 0, this.fileCache.size() - 1);
- }
-
- public Vector getDirectories() {
- if (this.directories != null) {
- return this.directories;
- } else {
- this.getFiles();
- return this.directories;
- }
- }
-
- public Object getElementAt(int index) {
- return this.fileCache != null ? this.fileCache.elementAt(index) : null;
- }
-
- public Vector getFiles() {
- if (this.files != null) {
- return this.files;
- } else {
- this.files = new Vector();
- this.directories = new Vector();
- this.directories.addElement(this.filechooser.getFileSystemView().createFileObject(this.filechooser.getCurrentDirectory(), ".."));
-
- for(int i = 0; i < this.fileCache.size(); ++i) {
- File f = (File)this.fileCache.elementAt(i);
- if (this.filechooser.isTraversable(f)) {
- this.directories.addElement(f);
- } else {
- this.files.addElement(f);
- }
- }
-
- return this.files;
- }
- }
-
- public int getSize() {
- return this.fileCache != null ? this.fileCache.size() : 0;
- }
-
- public int indexOf(Object o) {
- return this.fileCache != null ? this.fileCache.indexOf(o) : 0;
- }
-
- public void intervalAdded(ListDataEvent e) {
- }
-
- public void intervalRemoved(ListDataEvent e) {
- }
-
- public void invalidateFileCache() {
- this.files = null;
- this.directories = null;
- this.fileCache = null;
- }
-
- // $FF: renamed from: lt (java.io.File, java.io.File) boolean
- protected boolean method_0(File a, File b) {
- return a.getName().compareTo(b.getName()) < 0;
- }
-
- public void propertyChange(PropertyChangeEvent e) {
- String prop = e.getPropertyName();
- if (prop == "directoryChanged" || prop == "fileViewChanged" || prop == "fileFilterChanged" || prop == "FileHidingChanged" || prop == "fileSelectionChanged") {
- this.invalidateFileCache();
- this.validateFileCache();
- }
-
- }
-
- private void quickSort(Vector v, int lo0, int hi0) {
- int lo = lo0;
- int hi = hi0;
- if (hi0 > lo0) {
- File mid = (File)v.elementAt((lo0 + hi0) / 2);
-
- while(lo <= hi) {
- while(lo < hi0 && this.method_0((File)v.elementAt(lo), mid)) {
- ++lo;
- }
-
- while(hi > lo0 && this.method_0(mid, (File)v.elementAt(hi))) {
- --hi;
- }
-
- if (lo <= hi) {
- this.swap(v, lo, hi);
- ++lo;
- --hi;
- }
- }
-
- if (lo0 < hi) {
- this.quickSort(v, lo0, hi);
- }
-
- if (lo < hi0) {
- this.quickSort(v, lo, hi0);
- }
- }
-
- }
-
- protected void sort(Vector v) {
- this.quickSort(v, 0, v.size() - 1);
- }
-
- private void swap(Vector a, int i, int j) {
- Object T = a.elementAt(i);
- a.setElementAt(a.elementAt(j), i);
- a.setElementAt(T, j);
- }
-
- public void validateFileCache() {
- File currentDirectory = this.filechooser.getCurrentDirectory();
- if (currentDirectory == null) {
- this.invalidateFileCache();
- } else {
- this.fileCache = new Vector(50);
- if (this.loadThread != null) {
- this.loadThread.interrupt();
- }
-
- this.loadThread = new LoadFilesThread(this, currentDirectory);
- this.loadThread.start();
- }
- }
-
- static Vector access$fileCache(BasicDirectoryModel var0) {
- return var0.fileCache;
- }
-
- static JFileChooser access$filechooser(BasicDirectoryModel var0) {
- return var0.filechooser;
- }
- }
-